﻿// '' <summary>
// '' Gerenciamento de Erros
// '' </summary>
// '' <remarks></remarks>

    public class Erro
    {

        private Tipo lngNUMERO;
        private string strMENSAGEM;
        private string strORIGEM;



        // '' <summary>
        // '' Número / Código do Erro
        // '' </summary>
        // '' <value></value>
        // '' <returns></returns>
        // '' <remarks></remarks>
        public Tipo NUMERO
        {
            get
            {
                return lngNUMERO;
            }
            set
            {
                lngNUMERO = value;
            }
        }

        public string MENSAGEM
        {
            get
            {
                return strMENSAGEM;
            }
            set
            {
                strMENSAGEM = value;
            }
        }

        public string ORIGEM
        {
            get
            {
                return strORIGEM;
            }
            set
            {
                strORIGEM = value;
            }
        }

        // '' <summary>
        // '' Construtor do objeto. Inicia automaticamente com o valor (SemErro)
        // '' </summary>
        // '' <remarks></remarks>
        public Erro()
        {
            this.lngNUMERO = Tipo.SemErro;
            this.MENSAGEM = "";
            this.ORIGEM = "";
        }

        // '' <summary>
        // '' Construtor do objeto. Recebe o tipo de erro, mensagem e opcionalmente o descritivo da origem do erro.
        // '' </summary>
        // '' <param name="lngTipo">Tipo do Erro (Conforme Enumerador Tipo)</param>
        // '' <param name="strMensagem">Mensagem do Erro</param>
        // '' <param name="strOrigem">Origem do Erro</param>
        // '' <remarks></remarks>
        public Erro(Tipo lngTipo, string strMensagem, string strOrigem)
        {
            this.lngNUMERO = lngTipo;
            this.strMENSAGEM = strMensagem;
            this.strORIGEM = strOrigem;
        }

        // '' <summary>
        // '' Construtor do objeto. Recebe o somente tipo de erro.
        // '' </summary>
        // '' <param name="lngTipo">Tipo do Erro</param>
        // '' <remarks></remarks>
        public Erro(Tipo lngTipo)
        {
            this.lngNUMERO = lngTipo;
            switch (lngTipo)
            {
                case Tipo.SemErro:
                    strMENSAGEM = "";
                    break;
                case Tipo.ErroIndefinido:
                    strMENSAGEM = "";
                    break;
                case Tipo.ErroConexaoBancoDados:
                    strMENSAGEM = "Erro ao tentar conectar ao Banco de Dados";
                    break;
                case Tipo.ErroUsuarioNaoEncontrado:
                    strMENSAGEM = "Usu?rio N?o encontrado";
                    break;
                case Tipo.ErroUsuarioNaoLogado:
                    strMENSAGEM = "Usu?rio n?o efetuou devidamente o login ou a sess?o foi finalizada.";
                    break;
                case Tipo.ErroUsuarioSemAcesso:
                    strORIGEM = "USUARIOS";
                    strMENSAGEM = "Usu?rio n?o possui acesso ? este m?dulo.";
                    break;
                default:
                    strMENSAGEM = "Erro indefinido";
                    break;
            }
        }


        // '' <summary>
        // '' Enumerador de Tipos de Erros 
        // '' </summary>
        // '' <remarks></remarks>
        public enum Tipo
        {

            SemErro = 0,

            ErroConexaoBancoDados = 1,

            ErroUsuarioNaoLogado = 2,

            ErroUsuarioNaoEncontrado = 3,

            ErroUsuarioSemAcesso = 4,

            ErroIndefinido = 999,
        }
    }
